package com.bmslz.monitor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bmslz.monitor.base.dto.AlarmModelSaveDto;
import com.bmslz.monitor.base.entity.AlarmModel;
import com.bmslz.monitor.base.entity.AlarmModelRule;
import com.bmslz.monitor.base.vo.AlarmModelVo;

import java.util.Date;
import java.util.List;

/**
 * @Description: 告警模板
 * @Author: bobo
 * @Date: 2025-08-10
 * @Version: V1.0
 */
public interface IAlarmModelService extends IService<AlarmModel> {
    /**
     * 根据告警模板编号查询模板
     *
     * @param alarmModelNo 告警模板编号
     * @return AlarmModel
     */
    AlarmModel getByNo(String alarmModelNo);

    /**
     * 添加告警模板
     *
     * @param dto 添加的表单数据
     */
    void add(AlarmModelSaveDto dto);

    /**
     * 修改告警模板
     *
     * @param dto 修改的表单数据
     */
    void myUpdateById(AlarmModelSaveDto dto);

    /**
     * 根据id获取告警模板详情，包含具体告警规则列表
     *
     * @param id 告警模板id
     * @return AlarmModelVo
     */
    AlarmModelVo customGetById(String id);

    /**
     * 根据项目id和测点key查询告警规则
     *
     * @param projectId 项目id
     * @param attKey    测点key
     * @return List<AlarmModelRule>
     */
    List<AlarmModelRule> queryRuleByKey(String projectId, String attKey);

    Long total(Date startTime, Date endTime);
}
